//给你一个字符串 s，最多 可以从中删除一个字符。 
//
// 请你判断 s 是否能成为回文字符串：如果能，返回 true ；否则，返回 false 。 
//
// 
//
// 示例 1： 
//
// 
//输入：s = "aba"
//输出：true
// 
//
// 示例 2： 
//
// 
//输入：s = "abca"
//输出：true
//解释：你可以删除字符 'c' 。
// 
//
// 示例 3： 
//
// 
//输入：s = "abc"
//输出：false 
//
// 
//
// 提示： 
//
// 
// 1 <= s.length <= 10⁵ 
// s 由小写英文字母组成 
// 
//
// Related Topics 贪心 双指针 字符串 👍 564 👎 0

package leetcode.editor.cn;

import java.sql.Struct;

//java:验证回文串 II
public class Q0680ValidPalindromeIi {
    public static void main(String[] args){
//        Solution solution = new Q0680ValidPalindromeIi().new Solution();
        System.out.println(new Q0680ValidPalindromeIi().new Solution().validPalindrome("eeccccbebaeeabebccceea"));
    }
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public boolean validPalindrome(String s) {
        if (s.length() < 1 || s.length() > 100000) return false;
        int isDeleted = 0;
        char[] charArray = s.toCharArray();
        int low = 0, high = charArray.length - 1;
        while (low <= high) {
            if (charArray[low] == charArray[high]) {
                low++;
                high--;
            } else {
                if (charArray[low + 1] == charArray[high]) {
                    low++;
                } else if (charArray[low] == charArray[high - 1]) {
                    high--;
                } else {
                    return false;
                }
            }
        }
        return true;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}